// //导入axios包
// import axios from 'axios'
// import Vue from 'vue'

// // 添加请求拦截器
// axios.interceptors.request.use(function (config) {
//     // 在发送请求之前做些什么
//     console.log('请求拦截器');
//     console.log(config);
//     return config;
// }, function (error) {
//     // 对请求错误做些什么
//     return Promise.reject(error);
// });

// // 添加响应拦截器
// axios.interceptors.response.use(function (response) {
//     // 对响应数据做点什么
//     console.log('响应拦截器');
//     console.log(response);
//     return response;
// }, function (error) {
//     // 对响应错误做点什么
//     console.log('响应错误');
//     return Promise.reject(error);
// });
// //处理响应状态
// function checkStatus(response) {
//     console.log('checkStatus');
//     // loading
//     // 如果http状态码正常，则直接返回数据
//     if (response && (response.status === 200
//         || response.status === 304 || response.status === 400)) {
//         console.log('状态码正确');
//         return response
//         // 如果不需要除了data之外的数据，可以直接 return response.data
//     }
//     // 异常状态下，把错误信息返回去
//     console.log('状态码不正确');
//     return response
// }
// //处理响应码
// function checkCode(res) {
//     console.log('checkCode');
//     // 如果code异常(这里已经包括网络错误，服务器错误，后端抛出的错误)，可以弹出一个错误提示，告诉用户
//     console.log(res.status);
//     return res
// }


// function getHasCancelToken() {
//     let CancelToken = axios.CancelToken;
//     console.log('创建一个get请求');
//     return axios.get('https://cat-fact.herokuapp.com/facts/random', {},
//         {
//             cancelToken: new CancelToken(function executor(c) {
//                 console.log(Vue.$httpRequestList);
//                 Vue.$httpRequestList.push(c);
//             })
//         }).then((res) => {
//             console.log('获得响应');
//             console.log(res);
//         }).catch((err) => {
//             console.log('请求出错');
//             console.log(err);
//         })
// }


// function post(url, data) {
//     return axios({
//         method: 'post',
//         url,
//         data: data,
//         timeout: 10000,
//         headers: {
//             'X-Requested-With': 'XMLHttpRequest',
//             'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
//         },
//         //把取消请求对象加入axios请求队列中，后续可以用于取消队列中的请求
//         cancelToken: new axios.cancelToken(function executor(c) {
//             Vue.$httpRequestList.push(c);
//         })
//     }).then(
//         (response) => {
//             return checkStatus(response)
//         }
//     ).then(
//         (res) => {
//             return checkCode(res)
//         }
//     )
// }

// function get(url, params) {
//     return axios({
//         method: 'get',
//         url: url,
//         params: params, // get 请求时带的参数
//         timeout: 10000,
//         headers: {
//             'X-Requested-With': 'XMLHttpRequest'
//         },
//         //把取消请求对象加入axios请求队列中，后续可以用于取消队列中的请求
//         cancelToken: new axios.CancelToken(function executor(c) {
//             Vue.$httpRequestList.push(c);
//         })
//     }).then(
//         (response) => {
//             return checkStatus(response)
//         }
//     ).then(
//         (res) => {
//             return checkCode(res)
//         }
//     )
// }

// function all(items) {
//     //items中提供请求的方法，路径，参数，然后创建多个axios
//     // {
//     //   methed:'get',
//     //   url:api.get,
//     //   params:{},
//     // }
//     let axiosArray = [];
//     for (let index = 0; index < items.length; index++) {
//         const element = items[index];
//         let newPromise = axios({
//             method: element.method,
//             url: element.url,
//             data: element.params
//         })
//             .then(response => {
//                 console.log('success')
//                 console.log(response);
//                 return response;
//             })
//             .catch(error => {
//                 console.log('error')
//                 console.log(error);
//                 return Promise.reject(error);
//             })
//         console.log(newPromise);
//         axiosArray.push(newPromise)
//     }
//     //一次性返回两个接口
//     return axios.all(axiosArray).then(axios.spread(function () {
//         console.log('获得所有请求响应');
//         console.log(arguments);
//         return arguments
//     })).catch(error => {
//         console.log(error);
//     })
// }

// function cancelRequest() {
//     console.log(Vue.$httpRequestList);
//     if (Vue.$httpRequestList.length > 0) {
//         Vue.$httpRequestList.forEach(function (item) {
//             console.log(item);
//             console.log('取消一个请求');
//             item();
//         });
//         Vue.$httpRequestList = [];
//     }
//     console.log(Vue.$httpRequestList);
// }

// export {getHasCancelToken, post, get, all, cancelRequest };